home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 301-325 / disk_304 / skel / doargs.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  3KB  |  128 lines

  1. /*
  2.  *
  3.  *    do_args.c - Argument processing  - WB or CLI
  4.  *
  5.  */
  6.  
  7. #include <exec/types.h>
  8. #include <workbench/workbench.h>
  9. #include <workbench/icon.h>
  10. #include <workbench/startup.h>
  11. #include <stdio.h>
  12.  
  13. #define DELAYMAX 100
  14. #define DELAYDEF 0
  15. #define STRINGMAX 100
  16.  
  17. extern struct WBStartup *WBenchMsg;
  18. extern char title[];
  19. extern long delay;
  20. char filename[STRINGMAX];
  21. char title[STRINGMAX];    /* Window title */
  22. char *myname;
  23. void *OpenLibrary();
  24. struct IconBase *IconBase;
  25. long atol();
  26.  
  27. /*
  28.  *  General purpose Workbench argument processing subroutine.
  29.  *  It retrieves arguments from the icon ToolTypes array.
  30.  */
  31.  
  32.  
  33. getWBargs()
  34. {
  35.    struct WBArg *wbArg;
  36.    char   **toolArray;
  37.    char   *string;
  38.    struct DiskObject *diskObj;   
  39.  
  40.    if(IconBase = (struct IconBase *) OpenLibrary("icon.library",0L))
  41.       {
  42.       wbArg = WBenchMsg->sm_ArgList;
  43.       diskObj = (struct DiskObject *)GetDiskObject(wbArg->wa_Name);
  44.       if(diskObj)
  45.          {
  46.          toolArray = diskObj->do_ToolTypes;
  47.          if(string = FindToolType(toolArray,"DELAY"))
  48.             {
  49.             delay = atol(string);
  50.             if (delay <0 || delay >DELAYMAX) delay = DELAYDEF;
  51.             }
  52.          if(string = FindToolType(toolArray,"TITLE"))
  53.             {
  54.             if (*string != '\0') 
  55.                 {
  56.                 strncpy(title, string,STRINGMAX-1);
  57.                 title[STRINGMAX-1] = '\0';
  58.                 }
  59.             }
  60.          if(string = FindToolType(toolArray,"FILE"))
  61.             {
  62.             if (*string != '\0') 
  63.                 {
  64.                 strncpy(filename, string,STRINGMAX-1);
  65.                 filename[STRINGMAX-1] = '\0';
  66.                 }
  67.             }
  68.          FreeDiskObject(diskObj);
  69.          }
  70.       CloseLibrary(IconBase);
  71.       }
  72. }
  73.  
  74.       
  75. getCLIargs(argc,argv)
  76. int argc;
  77. char *argv[];
  78. {
  79.     register char  *p;
  80.  
  81.     /* get command name */
  82.     myname = (argc-- < 1) ? "skel" : *argv++;
  83.  
  84.     while (argc > 0) 
  85.         {
  86.         argc--;            /* One fewer to process  */
  87.         p = *argv++;    /* Get arg pointer and bump to next */
  88.  
  89.         if (*p != '-')  /* If no '-' it is the filename */
  90.             {
  91.             strncpy(filename, p,STRINGMAX-1);
  92.             filename[STRINGMAX-1] = '\0';
  93.             continue;
  94.             }
  95.  
  96.         p++;
  97.         switch (*p) {
  98.             case 't':        /* Title  */
  99.                 strncpy(title, ++p,STRINGMAX-1);
  100.                 title[sizeof(title)-1] = '\0';
  101.                 break;
  102.             case 'd':        /* delay in 1/50 sec. */
  103.                 delay = atoi(++p);
  104.                 if (delay <0 || delay >DELAYMAX) delay = DELAYDEF;
  105.                 break;
  106.             default:        /* Wrong option  */
  107.             usage();
  108.             done(14);
  109.             }
  110.         }
  111.  
  112. }
  113.  
  114. usage()
  115. {
  116.     fprintf(stderr,"Usage:%s: -d# -tstr file\n",myname);
  117.     fprintf(stderr,"Workbench Application Skeleton\n");
  118.     fprintf(stderr,"-d#   delay for do_it routine in 1/50 sec\n");
  119.     fprintf(stderr,"-tstr string for window title\n");
  120. }
  121.  
  122. #ifdef AZTEC_C
  123.  
  124. _wb_parse()  /* keep aztec's paws off it */
  125. {
  126. }
  127. #endif
  128.